#!/usr/bin/env node

var path = require('path');
var fs = require('fs');


var exeFilePath = process.argv[1];
var exeDir = path.parse(exeFilePath).dir;
var baseDir = exeDir.substr(0, exeDir.lastIndexOf(path.sep)) + path.sep + 'src';


function run(createType, name) {
	console.log(arguments)
	if((typeof createType !== 'string' || createType.length < 1) || (typeof name !== 'string' || name.length < 1) ) {
		console.log('命令格式如下：\r\n node create.js page pageName\r\n类别共两种page和component\r\n名称只能由英文、汉字、“-”和“_”组成');
		return;
	}
	var reg = /[^a-zA-Z0-9_\-\/]/ig;
	if(['page', 'component'].indexOf(createType) < 0) {
		throw new Error(createType + ' 格式不正确，只能是英文、汉字、"-"和"_"');
	}
	if(reg.test(name) === true) {
		throw new Error(createType + ' 格式不正确，只能是英文、汉字、"-"和"_"');
	}
	switch(createType) {
		case 'page':
			createPage(name);
			break;
		case 'component':
			createComponent(name);
			break;
	}
}

function createPage(name) {
	// var cateRootDir = baseDir + path.sep +  'page' + path.sep + name;
	// console.log(cateRootDir)
	// if(fs.existsSync(cateRootDir)) {
	// 	console.log('已经有名字为： ' + name + ' 的目录了，请重新创建新的目录或者编辑已有目录');
	// 	return;
	// }
	// fs.mkdirSync(cateRootDir);
	// try {
	createPageFile(baseDir, name);
	// } catch(e) {
	// 	fs.unlinkSync(cateRootDir);
	// }
}

/**
 * 创建页面相关的文件，暂时只允许创建一级目录
 * @param  {[type]} dir  [description]
 * @param  {[type]} name [description]
 * @return {[type]}      [description]
 */
function createPageFile(dir, name) {

	// 写入html
	var htmlFilePath = [dir, 'views', name].join(path.sep) + '.ejs';
	var htmlDir = path.dirname(htmlFilePath);
	if (!fs.existsSync(htmlDir)) {
		fs.mkdirSync(htmlDir);
	}
	fs.writeFileSync(htmlFilePath, '');


	var jsFilePath = [dir, 'js', name].join(path.sep) + '.js';
	var jsDir = path.dirname(jsFilePath);
	if (!fs.existsSync(jsDir)) {
		fs.mkdirSync(jsDir);
	}
	fs.writeFileSync(jsFilePath, '');
}



function createComponent(name) {
	var compRootDir = baseDir + path.sep +  'components' + path.sep + name;
	console.log(compRootDir)
	if(fs.existsSync(compRootDir)) {
		console.log('已经有名字为： ' + name + ' 的组件了，请重新创建新的组件名或者编辑已有组件');
		return;
	}
	fs.mkdirSync(compRootDir);
	// try {
	createCompFile(compRootDir, name);
}

function createCompFile(dir, name) {
	var pathLsit = ['js', 'scss']
	for(var i=0; i<pathLsit.length; i++) {
		// var fileDir = dir + path.sep + pathLsit[i];
		var filePath = dir + path.sep + name + '.' + pathLsit[i];
		fs.writeFileSync(filePath, '');
	}
}


run.apply(this, process.argv.slice(2));
